package com.afu.aopDemo.interception;


import com.afu.aopDemo.annotion.log;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * ClassName: MyInterceptor
 * Package: com.afu.aopDemo.interception
 * Description:
 *
 * @Author zxf
 * @Create 2024/2/2 11:49
 * @Version 1.0
 */
@Component
public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("prehandle is running");
        Class<?> aClass = handler.getClass();
        String simpleName = aClass.getSimpleName();
        System.out.println(simpleName);

        HandlerMethod method = (HandlerMethod) handler;
        log methodAnnotation = method.getMethodAnnotation(log.class);

        if (methodAnnotation != null){
            System.out.println(methodAnnotation.value());
        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}
